home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / BBS_UTL / STLTH22 / ALLOCBUF.PAS next >
Pascal/Delphi Source File  |  1992-02-09  |  1KB  |  60 lines

  1. {
  2. allocbuf.pas
  3. Stealth Bomber Version 2.2
  4.  
  5. Kevin Dean
  6. Fairview Mall P.O. Box 55074
  7. 1800 Sheppard Avenue East
  8. Willowdale, Ontario
  9. CANADA    M2J 5B9
  10. CompuServe ID: 76336,3114
  11.  
  12. February 10, 1992
  13.  
  14.     This module allocates a simple memory buffer whose size depends on the
  15. amount of memory available.  The size of the buffer is halved each time the
  16. allocation fails until memory is successfully allocated or the size goes below
  17. the minimum size requested.
  18.  
  19.     This code is public domain.
  20. }
  21.  
  22.  
  23. unit AllocBuf;
  24.  
  25.  
  26. interface
  27.  
  28.  
  29. function BufAlloc(var Size : word; MinSize : word) : pointer;
  30.  
  31.  
  32. implementation
  33.  
  34.  
  35. {***}
  36. { Allocate a buffer of flexible size. }
  37. function BufAlloc(var Size : word; MinSize : word) : pointer;
  38.  
  39. var
  40.   Buffer : pointer;
  41.   BufSize : word;
  42.  
  43. begin
  44. { Allocate as big a buffer as possible (at least MinSize). }
  45. BufSize := Size;
  46. repeat
  47.   GetMem(Buffer, BufSize);
  48.   if Buffer = nil then
  49.     BufSize := BufSize div 2;
  50. until (Buffer <> nil) or (BufSize < MinSize);
  51.  
  52. { Save buffer size. }
  53. Size := BufSize;
  54.  
  55. BufAlloc := Buffer;
  56. end;
  57.  
  58.  
  59. end.
  60.